// 导入工具函数
import { getAdminInfo } from '../utils/common';
import Vue from 'vue';
// 导入路由模块
import VueRouter from 'vue-router';
// 注册路由模块
Vue.use(VueRouter);
// 定义路由个规则
const Login=()=>import('../views/Login');
const Layout=()=>import('../views/Layout');
// 菜单管理
const Menu=()=>import('../views/menu/Index');
// 角色管理
const Role=()=>import('../views/role/Index');
// 管理员管理
const Admin=()=>import('../views/admin/Index');
// 分类管理
const Cate=()=>import('../views/cate/Index');
// 规格管理
const Specs=()=>import('../views/specs/Index');
// 管理中心
const Home=()=>import('../views/Home');
// 商品管理
const Goods=()=>import('../views/goods/Index');
// 会员管理
const Member=()=>import('../views/member/Index');
// 活动管理
const Banner=()=>import('../views/banner/Index');
// 404组件
const NotFound=()=>import('../views/NotFound');
const routes = [
  {
    name:'login',
    path:'/login',
    component:Login,
    meta:{
      title:'管理员登录',
      requireLogin:false    // 是否需要登录
    }
  },
  {
    name:'layout',
    path:'/',
    component:Layout,
    redirect:'/home',
    children:[
      {
        name:'home',
        path:'/home',
        component:Home,
        meta:{
          title:"管理中心",
          requireLogin:true
        }
      },
      {
        name:'menu',
        path:'/menu',
        component:Menu,
        meta:{
          title:'菜单管理',
          requireLogin:true
        }
      },
      {
        name:'role',
        path:'/role',
        component:Role,
        meta:{
          title:'角色管理',
          requireLogin:true
        }
      },
      {
        name:'admin',
        path:'/admin',
        component:Admin,
        meta:{
          title:'管理员管理',
          requireLogin:true
        }
      },
      {
        name:'cate',
        path:'/category',
        component:Cate,
        meta:{
          title:'分类管理',
          requireLogin:true
        }
      },
      {
        name:'specs',
        path:'/specs',
        component:Specs,
        meta:{
          title:'规格管理',
          requireLogin:true
        }
      },
      {
        name:'goods',
        path:'/goods',
        component:Goods,
        meta:{
          title:'商品管理',
          requireLogin:true
        }
      },
      {
        name:'member',
        path:'/member',
        component:Member,
        meta:{
          title:'会员管理',
          requireLogin:true
        }
      },
      {
        name:'banner',
        path:'/banner',
        component:Banner,
        meta:{
          title:'活动管理',
          requireLogin:true
        }
      }
    ],
    meta:{
      title:'管理中心',
      requireLogin:true
    }
  },
  {
    path:'*',
    component:NotFound,
    meta:{
      title:'404',
      requireLogin:false
    }
  }
];
// 创建路由对象
const router = new VueRouter({
  routes
});
// 路由导航守卫
router.beforeEach(function(to,from,next){
  // 当前用户访问的页面是否需要登录
  if(to.meta.requireLogin){
    // 读取登录信息
    const adminInfo=getAdminInfo();
    if(!adminInfo.token){
      // 如果没有登录,自动跳转到登录页面
      return next('/login');
    }
    // 如果即将访问的页面不在当前账号的权限范围内
    let {menus_url}=adminInfo;
    let menus=menus_url.concat(['/','/home','/login']);
    if(!menus.includes(to.path)){
       // 自动跳转到一个公共页面
      return next('/home')
    }
  }
  next();
  // 动态设置页面标题
  if(to.meta.title){
    document.title=to.meta.title;
  }
});
// 导出路由对象
export default router
